
const sass=require('sass')

module.exports=grunt=>{
    grunt.initConfig({
        foo:'bar',
        objtest:{
            prop1:1232,
            objprop:{
                foo:'111'
            }
        },
        // 为multiTask任务配置的多个目标
        multiTask:{
            options:{
                foo:'bar',
            },
            css:{
                options:{
                    foo:'baz'
                }
            },
            js:'2'
        },
        clean:{
            temp:'temp/app.js'
        },
        sass:{
            options:{
                sourceMap:true,
                implementation:sass
            },
            main:{
                files:{
                    'dist/css/main.css':'src/scss/main.scss'
                }
            }
        },
        babel:{
            options:{
                sourceMap:true,
                presets:['@babel/preset-env']
            },
            main:{
                files:{
                    'dist/js/app.js':'src/js/app.js'
                }
            }
        },
        watch:{
            js:{
                // 监听的文件
                files:['src/js/*.js'],
                // 文件发生改变时需要执行的任务
                tasks:['babel']
            },
            css:{
                // 监听的文件
                files:['src/scss/*.scss'],
                // 文件发生改变时需要执行的任务
                tasks:['sass']
            }
        }
    })
    grunt.loadNpmTasks('grunt-sass')
    grunt.loadNpmTasks('grunt-sass')
    grunt.loadNpmTasks('grunt-contrib-clean')
    grunt.registerMultiTask('multiTask',function(){
        console.log(this.options())
        // console.log(`target:${this.target},data:${this.data}`)
    })
    grunt.registerTask('objtest',()=>{
        console.log(grunt.config('objtest.objprop.foo'))
    })
    grunt.registerTask('foo',()=>{
        console.log(grunt.config('foo'))
    })
    grunt.registerTask('bar','任务描述',()=>{
        console.log('other task~')
    })
    // grunt.registerTask('default',()=>{
    //     console.log('default task~')
    // })
    grunt.registerTask('default',['foo','objtest'])

    grunt.registerTask('async-task', function(){
        const done=this.async()
        setTimeout(()=>{
            console.log('async task working...')
            done()

        },1000)
    })
    grunt.registerTask('badtask',()=>{
        console.log('badtask working')
        return false
    })

    grunt.registerTask('async-badtask',function(){
        const done=this.async()
        setTimeout(() => {
            console.log('async bad')
            done(false)
        }, 1000);
    })
}